The invention generally relates to computers and more particularly to a technique for assigning I/O controllers to hosts in a cluster.
A cluster may include one or more hosts connected together by an interconnection fabric. In traditional clusters, hosts have locally attached I/O controllers connected to local buses. FIG. 1 illustrates a typical bus-based computer 100, which includes a processor 102 connected to a host bus 103 and an I/O and memory controller (or chipset) 104. A local I/O bus 105 is connected to an I/O bridge 108. Several I/O devices are attached to the I/O bus, including I/O controllers 110 and 112 and a Local Area Network (LAN) Network Interface Card (NIC) 114. The I/O controllers 110 and 112 may be connected to one or more I/O devices, such as storage devices, hard disk drives, or the like. I/O bus 105 is a traditional I/O bus, such as a Peripheral Component Interconnect (PCI bus) a Industry Standard Architecture (ISA) bus or Extended ISA (EISA) bus, etc. A traditional I/O bus provides attachment points to which I/O controllers can be attached.
A bus-based computer, such as that shown in FIG. 1, has a number disadvantages and drawbacks. All of the I/O controllers on the I/O bus share the same power and clock domain and share a common address space. Due to the physical and electrical load limitations, only a relatively small number of I/O controllers may be attached to an I/O bus, and must be physically located within the same cabinet. Thus, the entire I/O bus is physically attached to a single computer system. Also, in traditional clusters, I/O controllers are not directly connected to the network or cluster. Thus, the I/O controllers on the I/O bus of a computer system are directly visible (or detectable) and addressable only by that computer system or host, but are not directly visible or addressable to any other host in the cluster. For example, the I/O controllers 110 and 112 are visible only to computer 100, and are not visible or addressable to any other host which may be connected to LAN 120. Therefore, bus-based computer systems provide a very inflexible arrangement for I/O resources.
As a result, there is a need for a technique that provides a much more flexible arrangement for I/O devices for computer systems. In addition, under such a flexible arrangement of I/O resources, a mechanism should be provided that allows for the efficient and effective coordination and assignment between controllers and hosts.